// ============ 通用工具函数 ============
/**
 * 登录状态校验
 */
function loginCheck() {
  if (localStorage.getItem('user') !== 'true') {
    showToast('请先登录系统！', 'error');
    setTimeout(() => {
      window.location.href = 'login.html';
    }, 1500);
    throw new Error('未登录，已跳转');
  }
}

/**
 * 退出登录
 */
function logout() {
  if (confirm('确定要退出登录吗？')) {
    fetch('/api/rest/user/logout', {
      method: 'DELETE',
      headers: { 'Content-Type': 'application/json' }
    })
    .then(() => {
      localStorage.removeItem('user');
      window.location.href = 'login.html';
    })
    .catch(error => {
      console.error('登出失败:', error);
      localStorage.removeItem('user');
      window.location.href = 'login.html';
    });
  }
}

/**
 * URL添加查询参数
 * @param {string} url - 原始URL
 * @param {string} param - 要添加的参数（格式：key=value&key2=value2）
 * @returns {string} 拼接后的URL
 */
function addQueryParam(url, param) {
  if (!param) return url;
  const separator = url.includes('?') ? '&' : '?';
  return `${url}${separator}${param}`;
}

/**
 * 提示框封装
 * @param {string} text - 提示文本
 * @param {string} type - 类型（success/error）
 * @param {number} duration - 持续时间（默认3000ms）
 */
function showToast(text, type = 'success', duration = 3000) {
  const bgColor = type === 'success' 
    ? 'linear-gradient(to right, #00b09b, #96c93d)' 
    : 'linear-gradient(to right, #e53e3e, #c53030)';
  
  Toastify({
    text,
    duration,
    close: true,
    backgroundColor: bgColor,
    style: { borderRadius: '10px', padding: '12px 20px' },
    gravity: 'top',
    position: 'right'
  }).showToast();
}

/**
 * 表单数据转JSON
 * @param {HTMLFormElement} form - 表单元素
 * @returns {object} JSON格式数据
 */
function formToJson(form) {
  const formData = new FormData(form);
  const json = {};
  formData.forEach((value, key) => {
    json[key] = value || '';
  });
  return json;
}

// 暴露全局函数
window.loginCheck = loginCheck;
window.logout = logout;
window.addQueryParam = addQueryParam;
window.showToast = showToast;
window.formToJson = formToJson;